package main

import (
	"context"
	"fmt"

	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"

	//"k8s.io/apimachinery/pkg/runtime/schema"
	"k8s.io/client-go/tools/clientcmd"
)

/*
*
@Author: cloudea
@Desc:  获取kube-system下的pod列表
*/
func main() {
	/** 1. 加载配置文件，生成配置对象 */
	config, err := clientcmd.BuildConfigFromFlags("", "/home/cloudea/.kube/config")
	if err != nil {
		panic(err.Error())
	}

	/** 实例化client set*/
	clientset, err := kubernetes.NewForConfig(config)

	if err != nil {
		panic(err.Error())
	}

	/**
	请求过程：
		Pods结构体实例，包含有一个restclient成员和一个namespace成员
	*/

	pods, err := clientset.CoreV1().Pods("kube-system").List(context.TODO(), metav1.ListOptions{})
	// clientset.CoreV1().Pods("kube-system").Apply();
	// clientset.CoreV1().Pods("kube-system").List();
	// clientset.CoreV1().Pods("kube-system").Bind();
	// clientset.CoreV1().Pods("kube-system").Create();
	// clientset.CoreV1().Pods("kube-system").Delete();
	// clientset.CoreV1().Pods("kube-system").Get();
	// clientset.CoreV1().Pods("kube-system").Patch();
	// clientset.CoreV1().Pods("kube-system").Update();
	// clientset.CoreV1().Pods("kube-system").Watch();
	// clientset.CoreV1().Pods("kube-system").DeleteCollection();
	// ...

	if err != nil {
		panic(err.Error())
	}

	for _, item := range pods.Items {
		fmt.Println(item.Name)
	}
}
